import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: { //存储数据
    cartList:[],//加入购物车的商品数据
    last_id:0,//记录最后一次新增的地址的id
    addressList:[],//地址数据
    collectList:[]//店铺数据
  },
  mutations: {

    collect(state,item) {//收藏功能 ,参数1: state, 参数2: 参数(数据)
      state.collectList.push(item);
    },

    cancel_collect(state, id){//取消收藏功能
      //找到需要取消收藏的对象在 collectList 中的位置
      var findIndex = state.collectList.findIndex((item) => { return item.id === id })
      
      //从数组中移除
      if(findIndex !== -1)
        state.collectList.splice(findIndex, 1);
    },

    add(state, item) { //添加地址

      item.id = state.last_id+1;//用最后一次新增地址的id+1得到当前地址的id
      state.addressList.push(item);
      state.last_id = item.id;//及时在新增地址之后,更新last_id的值
      
    },

    delete_address(state, id) {//删除地址
      //找到需要删除的地址对象在 addressList中的位置
      var findIndex = state.addressList.findIndex((item) => { return item.id === id })
      
      //删除
      if (findIndex !== -1)    
        state.addressList.splice(findIndex, 1);  
      
    },

    //从state.addressList中找到 需要修改的地址对象(位置),用新地址对象数据替换所在位置的旧的地址对象.
    update_address(state, newItem ) {// 更新地址, newItem 是新地址对象
      //找到 这个需要编辑的地址对象在 addressList中的位置
      var findIndex = state.addressList.findIndex(((item) => { return item.id === newItem.id }))
      
      //替换(用新地址对象替换旧地址对象)
      if (findIndex !== -1)
      {
        state.addressList.splice(findIndex, 1, newItem);
      }
    },

    add_to_cart(state, item) { //加入购物车
      //如果商品是第一次加入购物车,数量为1;
      //如果商品是第二次以后加入购物车,数量+1;
      //先查找一下, 看当前商品 item  在不在购物车中.
      var find = state.cartList.find((i) => {
        return i.id === item.id;
      })
      /* if (  不是第一次加入  ) */
      if ( find )//重复加入
      {
        find.count++;
      }
      else//是第一次加入
      {
        //item.count = 1;  
        Vue.set(item, 'count', 1);
        //给item对象 添加新数据count,并且设置count值为1
        //Vue.set()添加的属性是响应式属性.
        state.cartList.push(item);
      }
      console.log(state.cartList);
      
      
    },

    add_count(state, id ){ //数量+1
      //查找商品
      var find = state.cartList.find((i) => {
        return i.id === id;
      })
      //数量+1
      if (find)
      {
        find.count++;  
      }
      console.log(find);
      
    }
  },
  actions: {
  },
  modules: {
  }
})
